package service

import (
	"fmt"
	"github.com/robfig/cron/v3"
)

var (
	AutoTaskService *AutoTackService
)

type AutoTackService struct {
	Task *cron.Cron
}

// NewAutoTaskService 实例化结构体，同时也实例化 corn定时器
func NewAutoTaskService() *AutoTackService {
	secondParser := cron.NewParser(cron.Second | cron.Minute |
		cron.Hour | cron.Dom | cron.Month | cron.DowOptional | cron.Descriptor)
	return &AutoTackService{
		Task: cron.New(cron.WithParser(secondParser), cron.WithChain()),
	}
}

func InitAutoTask() {
	AutoTaskService = NewAutoTaskService()
	AutoTaskService.startCron()
}

func (this *AutoTackService) startCron() {
	//这里写实例化的任务对象，然后在下面的 func回调方法中回调任务方法。

	this.Task.AddFunc("*/1 * * * * *", func() {
		fmt.Println("每1秒执行一次")
	})

	this.Task.AddFunc("*/5 * * * * *", func() {
		fmt.Println("每5秒执行一次")
	})
	this.Task.AddFunc("@hourly", func() {
		fmt.Println("每个小时执行一次")
	})
	this.Task.AddFunc("@every 1h30m", func() {
		fmt.Println("每个小时的第三十分钟执行")
	})
	//启动定时器
	this.Task.Start()
}
